package main

import "fmt"

func main() {
	nums := []int{14329, 7568}
	odd, even := f(nums)
	fmt.Println(odd, even)
}

/**
小M面对一组从 1 到 9 的数字，
这些数字被分成多个小组，并从每个小组中选择一个数字组成一个新的数。
目标是使得这个新数的各位数字之和为偶数。
任务是计算出有多少种不同的分组和选择方法可以达到这一目标。
*/
// 例如对于[123, 456, 789]，14个符合条件的数为：147 149 158 167 169 248 257 259 268 347 349 358 367 369。
func solution(numbers []int) int {
	// Please write your code here
	return -1
}

func f(nums []int) (int, int) {
	if len(nums) == 1 {
		return getCount(nums[0])
	}
	odd, even := f(nums[1:])
	curOdd, curEven := getCount(nums[0])

	return curOdd*odd + curEven*even, curOdd*even + odd*curEven
}

func getCount(num int) (oddNumer, evenNumber int) {
	m := make(map[int]struct{})
	for num > 0 {
		n := num % 10
		num = num / 10
		if _, ok := m[n]; !ok {
			m[n] = struct{}{}
		} else {
			continue
		}
		if n%2 == 0 {
			evenNumber++
		} else {
			oddNumer++
		}

	}
	return
}
